package tool

import (
	"github.com/go-redis/redis"
	"log"
	"time"
)

type RedisStore struct {
	client *redis.Client
}
var RedisStoreObj *RedisStore

//Set(id string, value string)
func(rs RedisStore)Set(id string, val string){
	err :=rs.client.Set(id,val,time.Minute*10).Err()
	if err!=nil{
		log.Println(err)
	}
}

//Get(id string, clear bool) string
func(rs RedisStore)Get(id string, clear bool) string{
	val, err := rs.client.Get(id).Result()
	if err!=nil{
		log.Println(err)
		return ""
	}
	if clear{
		err2:=rs.client.Del(id)
		if err2!=nil{
			log.Println(err)
			return ""
		}
	}
	return val
}

//Verify(id, answer string, clear bool) bool
func (rs RedisStore) Verify(id, answer string, clear bool) bool {
	v := rs.Get(id, clear)
	return v == answer
}


func InitRedisStore()*RedisStore{
	if RedisStoreObj!=nil{
		return RedisStoreObj
	}else{
		config:=GetConfig().RedisConfig
		client:=redis.NewClient(&redis.Options{
			Addr:config.Addr + ":"+config.Port,
			Password:config.Password,
			DB: config.Db,
		})
		myredisStore:=RedisStore{client: client}
		RedisStoreObj=&myredisStore
		return &myredisStore
	}

}

